<!--
  运营-招聘管理-【职位应聘】
 -->
<template>
  <div class="app-container">
    <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
      <el-tab-pane label="按职位查看" name="1">
        <!-- 搜索工作栏 -->
        <el-form
          ref="leftQueryForm"
          :model="leftQueryParams"
          size="small"
          :inline="true"
          label-width="68px"
        >
          <el-form-item label="职位名称" prop="jobName">
            <el-input
              v-model="leftQueryParams.jobName"
              placeholder="请输入职位名称"
              clearable
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="职位状态" prop="status">
            <el-select v-model="leftQueryParams.status">
              <el-option
                v-for="item in jobStatus"
                :key="item.value"
                :value="item.value"
                :label="item.label"
              />
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-button
              icon="el-icon-refresh"
              @click="resetQuery"
            >重置</el-button>
            <el-button
              type="primary"
              icon="el-icon-search"
              @click="handleQuery"
            >搜索</el-button>
          </el-form-item>
        </el-form>
        <!-- 列表 -->
        <el-table
          v-loading="loading"
          :data="leftList"
          @sort-change="
            ({ column, prop, order }) =>
              sortChange('left', { column, prop, order })
          "
        >
          <el-table-column label="序号" type="index" />
          <el-table-column label="职位名称" align="center" prop="jobName" />
          <el-table-column label="简历投递数量" align="center" prop="postCount">
            <template slot-scope="scope">
              <el-button type="text" @click="openResumeList(scope.row)">{{
                scope.row.postCount
              }}</el-button>
            </template>
          </el-table-column>
          <el-table-column
            label="发布时间"
            align="center"
            prop="publishTime"
            width="180"
            sortable
          >
            <template slot-scope="scope">
              <span>{{
                moment(scope.row.publishTime).format("yyyy-MM-DD")
              }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="更新日期"
            align="center"
            prop="updateTime"
            width="180"
            sortable
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.updateTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column label="职位状态" align="status" prop="status">
            <template slot-scope="scope">
              {{ getStatusText(scope.row.status) }}
            </template>
          </el-table-column>
          <el-table-column label="部门" align="center" prop="department" />
          <el-table-column label="工作城市" align="center" prop="city" />
        </el-table>
        <!-- 分页组件 -->
        <pagination
          v-show="leftTotal > 0"
          :total="leftTotal"
          :page.sync="leftQueryParams.pageNo"
          :limit.sync="leftQueryParams.pageSize"
          @pagination="leftGetList"
        />
      </el-tab-pane>
      <el-tab-pane label="简历列表" name="2">
        <!-- 搜索工作栏 -->
        <el-form
          ref="rightQueryForm"
          :model="rightQueryParams"
          size="small"
          :inline="true"
          label-width="68px"
        >
          <el-form-item label="投递时期" prop="date">
            <el-date-picker
              v-model="rightQueryParams.date"
              type="daterange"
              align="right"
              unlink-panels
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              value-format="yyyy-MM-dd HH:mm:ss"
              :default-time="['00:00:00', '23:59:59']"
              :picker-options="pickerOptions"
            />
          </el-form-item>
          <el-form-item label="状态" prop="status">
            <el-select v-model="rightQueryParams.status" clearable>
              <el-option
                v-for="item in resumeStatus"
                :key="item.value"
                :value="item.value"
                :label="item.label"
              />
            </el-select>
          </el-form-item>
          <el-form-item label="学生姓名" prop="studentName">
            <el-input v-model="rightQueryParams.studentName" clearable />
          </el-form-item>
          <el-form-item label="来源" prop="source">
            <el-select v-model="rightQueryParams.source">
              <el-option
                v-for="(item, ind) in resumeSource"
                :key="ind"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
          </el-form-item>
          <el-form-item label="收藏" prop="collectStatus">
            <el-select v-model="rightQueryParams.collectStatus">
              <el-option label="不限" :value="null" />
              <el-option label="是" value="1" />
              <el-option label="否" value="0" />
            </el-select>
          </el-form-item>
          <el-form-item label="求职状态" prop="jobStatus">
            <el-select v-model="rightQueryParams.jobStatus">
              <el-option label="不限" :value="null" />
              <el-option label="正在实习" value="正在实习" />
              <el-option label="暂无实习" value="暂无实习" />
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-button
              icon="el-icon-refresh"
              @click="resetQuery"
            >重置</el-button>
            <el-button
              type="primary"
              icon="el-icon-search"
              @click="handleQuery"
            >搜索</el-button>
          </el-form-item>
        </el-form>
        <!-- 操作工具栏 -->
        <el-row :gutter="10" class="mb8">
          <el-col :span="1.5">
            <el-button
              v-if="multipleSelection.length"
              type="primary"
              plain
              icon="el-icon-plus"
              size="mini"
              @click="handleInvite(null)"
            >批量发送面试邀约</el-button>
          </el-col>
        </el-row>
        <!-- 列表 -->
        <el-table
          v-loading="loading"
          :data="rightList"
          @sort-change="
            ({ column, prop, order }) =>
              sortChange('right', { column, prop, order })
          "
          @selection-change="handleSelectionChange"
        >
          <el-table-column
            type="selection"
            width="55"
            :selectable="selectable"
          />
          <el-table-column label="序号" type="index" />
          <el-table-column label="应聘职位" align="center" prop="jobName" />
          <el-table-column label="应聘学生" align="center" prop="studentName" />
          <el-table-column label="学校" align="center" prop="schoolName" />
          <el-table-column label="学历" align="center" prop="education" />
          <el-table-column label="所学专业" align="center" prop="major" />
          <el-table-column label="居住地" align="center" prop="liveCity" />
          <el-table-column label="来源" align="center" prop="source">
            <template slot-scope="scope">{{
              getResumeSource(scope.row.source)
            }}</template>
          </el-table-column>
          <el-table-column
            label="投递日期"
            align="center"
            prop="postDate"
            width="180"
            sortable
          >
            <!-- todo 投递时间排序 -->
            <template slot-scope="scope">
              <span>{{ moment(scope.row.postDate).format("yyyy-MM-DD") }}</span>
            </template>
          </el-table-column>
          <el-table-column label="状态" align="center" prop="status">
            <template slot-scope="scope">
              {{ getResumeStatus(scope.row.status) }}
            </template>
          </el-table-column>
          <el-table-column label="收藏" align="center" prop="collectStatus">
            <template slot-scope="scope">
              {{ ["否", "是"][scope.row.collectStatus] || "否" }}
            </template>
          </el-table-column>
          <el-table-column label="最新备注" align="center" prop="remarks">
            <template slot-scope="scope">
              {{ scope.row.remarks || "--" }}
            </template>
          </el-table-column>
          <el-table-column label="求职状态" align="center" prop="jobStatus">
            <template slot-scope="scope">
              <span v-if="scope.row.jobStatus">{{ scope.row.jobStatus }}/</span>
              <span>{{ scope.row.inJobTime || "--" }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="操作"
            align="center"
            width="150px"
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <!--
              // 简历状态，resumeStatus（投递过程的工单状态）
              // *  0 投递成功，企业未查看简历、
              // *  1 企业已查看、
              // *  2 已发送面试邀约、
              // *  3 学生已查看 、
              // *  4 已拒绝面试邀约、
              // *  5 已确认面试邀约、
              // *  6 学生已反馈，企业未反馈、
              // *  7 企业已反馈，学生未反馈、
              // *  8 都反馈，结束
              -->
              <el-button
                size="mini"
                type="text"
                icon="el-icon-edit"
                @click="handleCheck(scope.row)"
              >查看</el-button>
              <el-button
                v-if="Number(scope.row.source) === 2"
                size="mini"
                type="text"
                icon="el-icon-edit"
                @click="handleCheckRemark(scope.row)"
              >查看推荐原因</el-button>
              <!-- 简历来源类型 0 不限 1 自主投递 2 平台推荐 3 企业邀请 -->
              <!-- 只有来源是学生投递，且未发送面试邀约的，才出现【面试邀约】按钮。来源为企业自主邀约、平台人才推荐类型的默认是已投递状态，不应该出现这个按钮 -->
              <!--
                主要不同类型的邀约逻辑：
                自主投递、平台推荐 => 相当于学生投递职位，默认status = 0
                企业邀请 => 相当于直接创建面试邀约，学生那边会收到邀约申请，但status也要从0开始走流程
                区别是：企业邀约不可以展示邀约按钮，防止重复邀约
               -->
              <el-button
                v-if="showInviteBtn(scope.row)"
                size="mini"
                type="text"
                icon="el-icon-edit"
                @click="handleInvite(scope.row)"
              >面试邀约</el-button>
              <el-button
                v-if="shoInviteEditBtn(scope.row)"
                size="mini"
                type="text"
                icon="el-icon-edit"
                @click="handleEditInvite(scope.row)"
              >修改面试邀约</el-button>
            </template>
          </el-table-column>
        </el-table>
        <!-- 分页组件 -->
        <pagination
          v-show="rightTotal > 0"
          :total="rightTotal"
          :page.sync="rightQueryParams.pageNo"
          :limit.sync="rightQueryParams.pageSize"
          :page-sizes="[10]"
          @pagination="rightGetList"
        />
      </el-tab-pane>
    </el-tabs>
    <!-- 查看职位下的简历投递记录 -->
    <el-drawer
      :title="dialogTitle"
      size="90%"
      :visible.sync="resumelDialog"
      direction="rtl"
    >
      <resumeListDialog
        ref="resumeDialog"
        :job="currentJob"
        @checkDetail="handleCheck"
      />
    </el-drawer>
    <!-- 面试邀约弹窗 -->
    <InviteDialog
      ref="inviteDialog"
      @close="rightGetList"
      @submit="submitInterview"
    />
    <!-- 查看应聘详情, 包括简历、职位、邀约 -->
    <el-drawer
      title="应聘详情"
      size="90%"
      :visible.sync="detailDialog"
      direction="rtl"
      @close="handleCloseDrawer"
    >
      <ResumeDetail
        v-if="currentRow && detailDialog"
        ref="resumeDetail"
        :user-info="currentRow"
        :job-id="currentRow.jobId"
        :resume-id="currentRow.id"
        :invite-recored-id="currentRow.id"
        @saveCollectFun="saveCollectFun"
      />
    </el-drawer>
  </div>
</template>

<script>
import moment from 'moment'
import {
  getEnterpriseJobPage,
  getpageByJob,
  createInvite,
  updateInvite,
  getInvitationRecord
} from '@/api/company-admin-api/hireManage/index.js'
import {
  jobStatus,
  businessAreaData,
  resumeStatus,
  resumeSource,
  getDeliverStatus,
  getProvinceAndCityDataValue,
  getProvinceAndCityDataLabel
} from '@/utils/frontDataDict.js'
import { deepClone } from '../../../utils'
import resumeListDialog from './components/resumeListDialog.vue'
import ResumeDetail from './resumeDetail.vue'
import InviteDialog from './components/inviteDialog.vue'
export default {
  name: 'JobObjective',
  components: { resumeListDialog, InviteDialog, ResumeDetail },
  data() {
    return {
      inviteEdit: false,
      moment: moment,
      resumeSource: resumeSource.filter((item) => item.label !== '不限'),
      detailDialog: false,
      currentRow: null,
      dialogTitle: '应聘详情',
      pickerOptions: {
        shortcuts: [
          {
            text: '最近一周',
            onClick(picker) {
              const start = moment()
                .startOf('day')
                .subtract(6, 'days')
                .format('yyyy-MM-DD HH:mm:ss')
              const end = moment().endOf('day').format('yyyy-MM-DD HH:mm:ss')
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近一个月',
            onClick(picker) {
              const start = moment()
                .startOf('day')
                .subtract(1, 'months')
                .format('yyyy-MM-DD HH:mm:ss')
              const end = moment().endOf('day').format('yyyy-MM-DD HH:mm:ss')
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近半年',
            onClick(picker) {
              const start = moment()
                .startOf('day')
                .subtract(6, 'months')
                .format('yyyy-MM-DD HH:mm:ss')
              const end = moment().endOf('day').format('yyyy-MM-DD HH:mm:ss')
              picker.$emit('pick', [start, end])
            }
          }
        ]
      },
      resumeStatus: resumeStatus, // 简历状态
      // 简历列表弹窗
      resumelDialog: false,
      // 职位状态
      jobStatus: jobStatus,
      activeName: '1',
      // 企业行业类型数据，二级联动
      businessAreaData: businessAreaData,
      getDeliverStatus,
      // 遮罩层
      loading: true,
      // 发布中-总条数
      leftTotal: 0,
      // 未发布-总条数
      rightTotal: 0,
      // 发布中列表
      leftList: [],
      // 未发布列表
      rightList: [],
      // 弹出层标题
      title: '',
      // 按职位列表参数
      leftQueryParams: {
        pageNo: 1,
        pageSize: 10,
        jobName: '',
        sortField: {
          field: '',
          order: ''
        },
        status: null
      },
      // 简历列表
      rightQueryParams: {
        pageNo: 1,
        pageSize: 10,
        date: [],
        studentName: '',
        source: '',
        collectStatus: null,
        jobStatus: null,
        sortField: {
          field: '',
          order: ''
        },
        status: null
      },
      // 0 未发布，1 待审核，2 发布中，3 暂停发布, 4 驳回
      statusText: {
        0: '未发布',
        1: '待审核',
        2: '发布中',
        3: '暂停发布',
        4: '驳回'
      },
      currentJob: null,
      multipleSelection: []
    }
  },
  created() {
    // 1 按职位查看 2 按简历列表
    const { activeName, studentName } = this.$route.query
    if (activeName && studentName) {
      this.activeName = activeName
      this.rightQueryParams.source = '3'
      this.rightQueryParams.studentName =
        typeof studentName === 'string' && studentName !== ''
          ? studentName
          : ''
      Number(this.activeName) === 2 ? this.rightGetList() : this.leftGetList()
    } else {
      this.leftGetList()
    }
  },
  methods: {
    // 展示面试邀约按钮
    showInviteBtn(row) {
      /**
       * // 简历状态，resumeStatus（投递过程的工单状态）
      // *  0 投递成功，企业未查看简历、
      // *  1 企业已查看、
      // *  2 已发送面试邀约、
      // *  3 学生已查看 、
      // *  4 已拒绝面试邀约、
      // *  5 已确认面试邀约、
      // *  6 学生已反馈，企业未反馈、
      // *  7 企业已反馈，学生未反馈、
      // *  8 都反馈，结束
       *  简历来源类型 1 自主投递 2 平台推荐 3 企业邀请
          主要不同类型的邀约逻辑：
          自主投递、平台推荐 => 相当于学生投递职位，默认status = 0
          企业邀请 => 相当于直接创建面试邀约，学生那边会收到邀约申请，默认status = 2
          区别是：企业邀约不可以展示邀约按钮，防止重复邀约
       */
      const source = Number(row.source)
      const status = Number(row.status)
      return (source === 1 || source === 2) && status < 2
    },
    // 展示修改面试邀约按钮
    // 2023-12-23,最新修改，允许企业再次修改面试邀约信息，重新发起
    shoInviteEditBtn(row) {
      const status = Number(row.status)
      return status === 2 || status === 3 || status === 4 || status === 5
    },
    handleCheckRemark(row) {
      this.$confirm(row.remark || '--', '平台推送原因', {
        confirmButtonText: '确定',
        showCancelButton: false
      }).then(() => {})
    },
    sortChange(type, { column, prop, order }) {
      const sortType = {
        ascending: 'asc',
        descending: 'desc'
      }
      const sortField = {
        field: prop,
        order: order !== null ? sortType[order] : null
      }
      if (order === null) {
        switch (type) {
          case 'left':
            Object.assign(this.leftQueryParams.sortField, {
              field: '',
              order: ''
            })
            this.leftGetList()
            break
          case 'right':
            Object.assign(this.rightQueryParams.sortField, {
              field: '',
              order: ''
            })
            this.rightGetList()
            break
          default:
            break
        }
      } else {
        switch (type) {
          case 'left':
            Object.assign(this.leftQueryParams.sortField, sortField)
            this.leftGetList()
            break
          case 'right':
            Object.assign(this.rightQueryParams.sortField, sortField)
            this.rightGetList()
            break
          default:
            break
        }
      }
    },
    handleCloseDrawer() {
      setTimeout(() => {
        this.$refs.resumeDialog && this.$refs.resumeDialog.getList()
      })
    },
    // 复选框禁用
    selectable(row) {
      return Number(row.status) < 2
    },
    /**
     * @desc 批量创建\更新面试邀约
     * @param {Object} data 统一的面试邀约条件，后续组装到所有的批量数据里
     */
    submitInterview(data) {
      let multipleSelection
      if (this.currentResumeRow === null) {
        // 多个邀约
        multipleSelection = deepClone(data)
      } else {
        // 单个邀约
        multipleSelection = [this.currentResumeRow]
      }
      multipleSelection = multipleSelection.map((item) => {
        const interviewItem = {
          companyId: '', // 企业id
          companyName: '', // 企业名称
          deptId: '', // 部门id,
          email: '', // 邮箱
          evaluation: '', // 面试评价
          feedback: '', // 学生评价/原因,
          inviteAddress: '', // 面试地址
          inviteContent: '', // 面试描述内容,
          inviteDate: '', // 面试邀约日期
          inviteResult: '', // 原因
          inviteWay: '', // 邀约方式
          jobId: '', // 职位id
          jobName: '', // 职位名称
          noticeItem: '', // 注意事项
          phoneNumber: '', // 手机号
          publisherId: '', // 发布人id
          publisherName: '', // 发布人姓名
          sendRecordId: '', // 发送记录id
          status: '', // 状态
          id: '', // 发送记录id
          studentId: '', // 学生id
          studentName: '', // 学生姓名
          userId: '', // 用户id
          resumeId: '', // 简历id
          isSendMsg: '0', // 是否发送短信提示
          isSendEmail: '0' // 是否发送邮件提示
        }
        Object.assign(item, data)
        for (const key in interviewItem) {
          if (Object.hasOwnProperty.call(item, key)) {
            interviewItem[key] = item[key]
          }
        }
        if (!this.inviteEdit) {
          interviewItem.sendRecordId = item.id
        }
        return interviewItem
      })
      if (this.inviteEdit) {
        // // 学生确认、拒绝邀约前，企业可更新邀约内容
        multipleSelection[0].status = '2' // 2 发送面试邀约
        // 2023-11-27，最新需求，就算学生拒绝、确认后，企业仍可修改邀约内容
        updateInvite(multipleSelection[0]).then((res) => {
          if (res.code === 0 && res.data) {
            this.$message.success('修改成功~')
            this.$refs.inviteDialog.close()
          }
        })
      } else {
        createInvite(multipleSelection).then((res) => {
          if (res.code === 0 && res.data) {
            this.$message.success('发送成功~')
            this.$refs.inviteDialog.close()
          }
        })
      }
    },
    handleSelectionChange(val) {
      this.multipleSelection = []
      val.map((item) => {
        if (Number(item.status) < 2) {
          this.multipleSelection.push(item)
        }
      })
    },
    // 返回简历状态
    getResumeStatus(status) {
      const result = this.resumeStatus.find(
        (item) => Number(item.value) === Number(status)
      )
      return (result && result.label) || '--'
    },
    // 编辑面试邀约，打开弹窗
    handleEditInvite(row) {
      this.inviteEdit = true
      if (row) {
        // 单个
        this.currentResumeRow = deepClone(row)
        const { companyId, id: sendRecordId, resumeId, jobId } =
          this.currentResumeRow
        // 简历状态，resumeStatus（投递过程的工单状态）
        // *  0 投递成功，企业未查看简历、
        // *  1 企业已查看、
        // *  2 已发送面试邀约、
        // *  3 学生已查看 、
        // *  4 已拒绝面试邀约、
        // *  5 已确认面试邀约、
        // *  6 学生已反馈，企业未反馈、
        // *  7 企业已反馈，学生未反馈、
        // *  8 都反馈，结束
        // 查询面试邀约id
        getInvitationRecord({
          sendRecordId,
          companyId,
          resumeId,
          jobId,
          page: 1,
          pageSize: 10,
          status: ['2', '3', '4', '5'] // 就算学生已经确认（5），也要支持企业去修改面试邀约，重新走流程
        }).then((res) => {
          if (res.code === 0 && res.data) {
            const list = res.data?.list || []
            console.log('result>>>>', list)
            if (Array.isArray(list) && list.length > 0) {
              const item = list[0]
              try {
                item.inviteWay = JSON.parse(item.inviteWay)
              } catch (error) {
                console.error('inviteWay is empty')
              }
              try {
                item.noticeItem = JSON.parse(item.noticeItem)
              } catch (error) {
                console.error('noticeItem is empty')
              }
              const city = getProvinceAndCityDataValue(
                item.inviteAddress.split('市')[0] + '市'
              )
              const workAddress = item.inviteAddress.split('市')[1]
              item.city = city ? getProvinceAndCityDataLabel(city, 4) : []
              item.workAddress = workAddress || ''
              this.$refs.inviteDialog.open(item)
            } else {
              this.$message.warning('未查到面试邀约记录，请稍后重试～')
            }
          }
        })
      } else {
        // 批量
        this.currentResumeRow = null
        this.$refs.inviteDialog.open(this.currentResumeRow)
      }
    },
    // 打开面试邀约弹窗
    handleInvite(row) {
      this.inviteEdit = false
      if (row) {
        // 单个
        this.currentResumeRow = deepClone(row)
      } else {
        // 批量
        this.currentResumeRow = null
      }
      this.$refs.inviteDialog.open()
    },
    // 查询职位下的简历投递记录
    openResumeList(row) {
      if (row.postCount === 0) return
      this.currentJob = deepClone(row)
      this.dialogTitle = `${row.jobName}-应聘详情`
      this.resumelDialog = true
      setTimeout(() => {
        this.$refs.resumeDialog.getList()
      })
    },
    // 返回简历来源展示文本
    getResumeSource(status) {
      const result = this.resumeSource.find(
        (item) => Number(item.value) === Number(status)
      )
      return (result && result.label) || '--'
    },
    // 返回简历状态
    getStatusText(status) {
      return this.statusText[status] || '--'
    },
    // tag切换，刷新数据
    handleClick(data) {
      const index = Number(data.index)
      switch (index) {
        case 0:
          this.leftGetList()
          break
        case 1:
          this.rightGetList()
          break
      }
    },
    // 发布中列表数据
    leftGetList() {
      this.loading = true
      // 处理查询参数
      let params = deepClone(this.leftQueryParams)
      // 下拉职位状态（string） 0 不限，1 发布中，2 暂停发布
      // 职位状态(string)：0 未发布，1 待审核，2 发布中，3 暂停发布, 4 驳回
      if (params.status === '0' || params.status === null) {
        params.status = ['2', '3']
      } else if (params.status === '1') {
        params.status = ['2']
      } else if (params.status === '2') {
        params.status = ['3']
      }
      params = this.filterEmptyParam(params)
      if (params.sortField.order === '') {
        delete params.sortField
      }
      // 执行查询
      getEnterpriseJobPage(params).then((res) => {
        if (res.code === 0 && res.data) {
          res.data.list.map((item) => {
            try {
              item.city = JSON.parse(item.city)
              item.city = item.city.join('')
            } catch {
              () => {}
            }
            return item
          })
          this.leftList = res.data.list
          this.leftTotal = res.data.total
          this.loading = false
        }
      })
    },
    // 清除空参数
    filterEmptyParam(obj) {
      const newObj = {}
      for (const key in obj) {
        if (obj[key] !== null && obj[key] !== '') {
          newObj[key] = obj[key]
        }
      }
      return newObj
    },
    // 简历列表接口数据
    rightGetList() {
      this.loading = true
      // 处理查询参数
      let params = deepClone(this.rightQueryParams)
      params = this.filterEmptyParam(params)
      if (params.date.length === 2) {
        params.beginPostDate = params.date[0]
        params.endPostDate = params.date[1]
      }
      delete params.date
      if (params.sortField.order === '') {
        delete params.sortField
      }
      // 执行查询
      getpageByJob(params).then((res) => {
        this.loading = false
        if (res.code === 0 && res.data && res.data.list) {
          const list = deepClone(res.data.list).map((item) => {
            if (
              Array.isArray(item.educationalExperience) &&
              item.educationalExperience.length
            ) {
              const educate = ['大专', '本科', '硕士', '博士']
              educate.map((iten) => {
                const matchEducate = item.educationalExperience.find(
                  (single) => single.educationalBackground.indexOf(iten) > -1
                )
                if (matchEducate) {
                  item.schoolName = matchEducate.schoolName // 学校名称
                  item.major = matchEducate.major // 专业
                  item.education = iten // 学历
                }
              })
            } else {
              item.schoolName = '--' // 学校名称
              item.major = '--' // 专业
              item.education = '--' // 学历
            }
            return item
          })
          this.rightList = list
          this.rightTotal = res.data.total
        } else {
          this.rightList = []
          this.rightTotal = 0
        }
      })
    },
    /** 搜索按钮操作 */
    handleQuery() {
      if (this.activeName === '1') {
        this.leftQueryParams.pageNo = 1
        this.leftGetList()
      } else if (this.activeName === '2') {
        this.rightQueryParams.pageNo = 1
        this.rightGetList()
      }
    },
    // 重制搜索条件
    resetQuery() {
      if (this.activeName === '1') {
        this.resetForm('leftQueryForm')
        this.leftQueryParams = this.$options.data().leftQueryParams
        this.handleQuery()
      } else {
        this.resetForm('rightQueryForm')
        this.rightQueryParams = this.$options.data().rightQueryParams
        this.handleQuery()
      }
    },
    /** 打开应聘详情 */
    handleCheck(row) {
      this.currentRow = deepClone(row)
      this.detailDialog = true
      setTimeout(() => {
        this.$refs.resumeDetail.init()
      })
    },
    saveCollectFun() {
      console.log(this.activeName, '----')
      if (this.activeName === '1') {
        this.$refs.resumeDialog && this.$refs.resumeDialog.getList()
      } else {
        this.rightGetList()
      }
    }
  }
}
</script>
